Software is a collection of computer programs (or code) and related data that provides instructions for telling a computer or processor what to do and how to do it. It is quite common for an enterprise to continue to develop and improve a software product even after it has been released. Improvements and correction of flaws require that the code and/or data for a software product be upgraded to implement the improvements. Software upgrades may be considered to be of one of two types: major upgrades and minor upgrades. Major upgrades may include changes or upgrades to the entire software product, while minor upgrades may only add one or two new features and may only involve replacing a few functions or a few lines of code. Upgrades may take a significant amount of time to implement on a computer and the particular software being updated may not be available for use by a user during the upgrade process.